#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QMessageBox>
#include <string>
#include <QDebug>

using std::string;

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    connect_slots();    //连接槽函数
    change_module();    //这个函数本来有用，但是目前已经被废除。

    machine_setting.read_setting(); //启动时加在一次配置
    //指针设置为空
    pointer_help = NULL;
    pointer_setting = NULL;
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::print()
{
    //printer.easy_print(ui->LABEL->toPlainText(),&machine_setting);

    //如果打印失败，进行报错
    int flag = printer.command_print(ui->LABEL->toPlainText(),&machine_setting);
    qDebug()<<flag;
    if( flag != 1)
    {
        QMessageBox box;    //调用box对象的information方法，进行提示。
        box.information(this,"提示信息","打印失败，请检查设置是否正确","OK");
    }
}

void MainWindow::change_module()
{
    //目前这个函数没有任何作用，但我将其保留。
    //在早期，我希望能通过勾选模式对软件的行为进行控制。
    //后来我发现，其实没有必要做得那么复杂。如果真的做得那么复杂，反而偏离了做这个小工具的初衷。
    //所以现在，勾选模式并不会触发任何函数。
    //其它函数需要时会读取模式框是否勾选。
    /*
    if(ui->MODLE->isChecked())
    {
        //"切换为条码模式";

        //固定窗口大小
        ui->LABEL->show();
        this->setFixedSize(500, 150);
        ui->SHELL->hide();
        ui->SHELL->setEnabled(false);
        ui->HELP->hide();
        ui->SETTING->hide();
    }
    else
    {
        //"切换为纯文本模式";

        //固定窗口大小
        ui->LABEL->hide();
        this->setFixedSize(500, 400);
        ui->SHELL->show();
        ui->SHELL->setEnabled(true);
        ui->HELP->show();
        ui->SETTING->show();
    }*/
}

void MainWindow::help(){
    if(pointer_help==NULL)
    {
        pointer_help = new window_help();
        pointer_help->show();

        connect(pointer_help,SIGNAL(help_close_window()),this,SLOT(reset_help_pointer()));
    }
}
void MainWindow::setting(){
    if(pointer_setting==NULL)
    {
        pointer_setting = new window_setting(0,&machine_setting);//构建窗口时传递指针
        pointer_setting->show();

        connect(pointer_setting,SIGNAL(setting_close_window()),this,SLOT(reset_setting_pointer()));
    }
}
void MainWindow::reset_help_pointer()  //重置help窗口指针为NULL，这样就能再次打开窗口。
{
    pointer_help = NULL;
}

void MainWindow::reset_setting_pointer()  //重置setting窗口指针为NULL，这样就能再次打开窗口。
{
    pointer_setting = NULL;
}

void MainWindow::connect_slots()
{
    connect(ui->PRINT,SIGNAL(clicked()),this,SLOT(print()));
    connect(ui->SETTING,SIGNAL(clicked()),this,SLOT(setting()));
    connect(ui->HELP,SIGNAL(clicked()),this,SLOT(help()));
}
